#pragma once
#include "Bindable.h"

class Topology : public Bindable
{
public:
	enum class Primitive
	{
		PointList = D3D11_PRIMITIVE_TOPOLOGY_POINTLIST,
		LineStrip = D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP,
		LineList = D3D11_PRIMITIVE_TOPOLOGY_LINELIST,
		TriangleList = D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
		TriangleStrip = D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
		Undefined = D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED
	};
public:
	Topology(Graphics& gfx, Primitive type);
	void Bind(Graphics& gfx) override;
	static std::shared_ptr<Topology> Create(Graphics& gfx, Primitive type = Primitive::TriangleList);
protected:
	Primitive type;
};
